Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

280
Visualizações
¿Cuál es el punto de usar el carácter de escape "?" en lugar de una plantilla literal al construir consultas SQL en JavaScript?

Hoy en mi bootcamp comenzamos a construir y ejecutar consultas SQL en Node.js. Una vez que cubrimos los conceptos básicos, mi instructor nos mostró cómo usar "?" como un carácter de escape, que se supone que de alguna manera evita las inyecciones de SQL. Creo que entiendo la esencia de este concepto, pero estoy muy confundido en cuanto a por qué uno haría esto en lugar de poner cualquier variable que estén insertando dentro de una plantilla literal. Por ejemplo:

 db.query("DELETE FROM foo WHERE id = ?", [bar], function (err, result){})

contra

 db.query(`DELETE FROM foo WHERE id = ${bar}`, function (err, result){})

Mi instructor no siempre es el mejor en instruir, pero ha demostrado tener mucho conocimiento, así que confío en que esto sea por una razón. En el pasado, notamos que a menudo usa técnicas más antiguas que han sido reemplazadas en gran medida por adiciones más recientes al lenguaje; ¿Es tal vez un caso de él haciendo eso?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Interpolación directa como

 `DELETE FROM foo WHERE id = ${bar}`

es una mala idea porque si la bar se genera dinámicamente, como si se tomara del usuario, esto podría conducir a una inyección de SQL. Consulte Mesas Bobby .

Si bien, en teoría, sería posible tomar una cadena de entrada y hacer su propio intento de desinfectarla adecuadamente y luego interpolar el resultado directamente, si se equivoca, tendrá problemas. Como resultado, los controladores de la base de datos a menudo proporcionan una forma diferente de pasar la entrada posiblemente no confiable, de modo que todo eso se puede abstraer al controlador de la base de datos, lo que hace que sea mucho más fácil para los desarrolladores. De esa manera, en lugar de que cada usuario individual tenga que implementarlo (y esperar que lo haga correctamente), el controlador de la base de datos puede implementarlo una vez y hacer que todos lo usen en su lugar.

Para este caso particular, mysql analizará la cadena que pasa y reemplazará ? s con versiones correctamente escapadas del segundo parámetro.

En el pasado, notamos que a menudo usa técnicas más antiguas que han sido reemplazadas en gran medida por adiciones más recientes al lenguaje; ¿Es tal vez un caso de él haciendo eso?

No, el enfoque que muestra en su pregunta es muy normal y moderno.

about 4 years ago · Juan Pablo Isaza Relatório

0

El primer parámetro se asigna al primer signo de interrogación. Este cambio mínimo garantiza que los valores de entrada se escapen y, como tal, evita un ataque de inyección SQL aquí.

mira esta publicación ¿por qué usamos? en consultas.
¿Cuál es el significado del signo de interrogación en MySQL en "WHERE column =?"?

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda